The main characteristics of real-time systems may be defined as:                Time constraints: The system response must be correct and in time. Here we consider soft real-time systems where missing a deadline does not generate an unacceptable failure.        Concurrency: Multiple simultaneous activities can take place. There are several threads of control running in parallel.        Non-functional requirements: Real-time systems have usually high non-functional requirements as performance, quality of service, robustness or capacity.        Distribution: Large systems are usually distributed among processors.        
To complete start/restart/upgrade of a distributed system such that it is ready for normal operation, several dependencies between processes and clusters of processes should be resolved. Introducing synchronisation mechanisms solves this problem.
A typical example of the need of synchronization is access to a database controlled by a separate server process. The server process offering the database access is a common synchronization point for the client processes. The start/restart of the client can't complete until the database server process is up and running. Besides if the data must be converted when upgrading, the client processes should wait for data conversion as well to be finished before accessing data.
In a system with a layered structure, some services should be started or upgraded in lower layers before components in higher levels can be started.
The known solution to this problem is to develop an installation program responsible for moving and when needed converting configuration data and hereby avoid the need for synchronisation when upgrading. After running the installation program or scripts specified for installing the new version of the code, the system can start as in a case of normal start.
There are several disadvantages related to this method:                1. The centralised installation program needs to know of all changes in the data structures, and in detail how to convert it. This is in conflict with the principle of encapsulation in object-oriented development where an object should own its date and access to this data is done via methods offered by the object's interface.        2. The method does not reuse the already developed mechanisms for synchronisation of several processes and software modules during start and in run-time. Therefore extra cost for design and implementation is to be counted.                    a) The scripts or installation programs cannot usually run in parallel. Thus it takes long time to restart the system when upgrading.                        